In the world of virtual computing, multiple virtual machines (VMs or guests) can be instantiated at a software level on a single physical computer (host computer). In various virtualization scenarios, a software component often called a hypervisor can act as an interface between the guests and the host operating system for some or all of the functions of the guests. In other virtualization implementations, there is no underlying host operating system running on the physical, host computer. In those situations, the hypervisor acts as an interface between the guests and the hardware of the host computer. Even where a host operating system is present, the hypervisor sometimes interfaces directly with the hardware for certain services. In some virtualization scenarios, the host itself is in the form of a guest (i.e., a virtual host) running on another host. The services described herein as being performed by a hypervisor are, under certain virtualization scenarios, performed by a component with a different name, such as “supervisor virtual machine,” “virtual machine manager (VMM),” “service partition,” or “domain 0 (dom0).” The name used to denote the component(s) performing specific functionality is not important.
It is becoming increasingly common for users to run multiple virtual machines on a single host computer. For example, in a virtualization environment, it is possible for virtual machines to run different operating systems than the host. Many Mac users find it convenient to run a Windows guest on their Mac host, in order to run programs that are best suited for (or only available on) Windows. A common example is the use of Outlook to access corporate email from Exchange. While there are native Mac alternatives, the latest and best integrated email features tend to be superior on Windows applications.
In addition, using separate guests to house different application sets can be useful, on either a Mac or Windows (or other) host. This technique enables the creation of a separate “virtual appliance” for each application set, in which the operating system environment within the guest running the application set is specifically tuned to maximize performance and meet the needs of that application set. Fine tuning for multiple application sets within a single operating system environment can result in conflicts. Such conflicts can be avoided by using this virtual appliance approach, in which each application set runs in its own guest, thereby keeping the operating system environments separated. This not only reduces the risk of conflict or interference between environments, but provides a level of granularity that can be extremely convenient.
Another example in which multiple virtual machines are run on a computer is within the context of a software development environment. It is desirable for developers to use virtual machines to keep different development environments separated from one another and from the primary, host operating system.
Useful though they are, running multiple virtual machines on a host creates certain burdens for the user. For example, each time a user configures a computer (physical or virtual), the user typically goes through an involved process of customization and personalization of various operating system and application settings (e.g., setting favorites, configuring menus, setting preferences, etc.). Each time the user sets up a new virtual machine on the host, the user has to go through this process yet again, which is burdensome and repetitive. Currently, the entire customization process a user has already gone through to configure the primary, host computer has to be repeated for each and every virtual computer the user runs on that host.
It would be desirable to address these issues.